Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / backend / test_lxst_integration.py

Displaying Raw • Download


tests/backend/test_lxst_integration.py 7bafa411b6bc00f098a2131a3ffcba55cb026cbe (7bafa411) Text, 5.29 KB

T8b949e# SPDX-License-Identifier: 0BSD

T8b949e"""Integration-oriented tests for real LXST telephony classes.

These tests intentionally use LXST's real ``Telephone`` implementation while stubbing
RNS/network/audio backends, so we validate LXST behavior without requiring hardware.
"""

Tff7b72from T7ee787types Tff7b72import Te6edf3SimpleNamespace
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3MagicMock

Tff7b72import T7ee787pytest

Te6edf3pytestTff7b72.Td2a8ffimportorskipTb4b4b4(Ta5d6ff"Ta5d6ffLXSTTa5d6ff"Tb4b4b4)
Te6edf3pytestmark Tff7b72= Te6edf3pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8fflxst_real

Tff7b72from T7ee787LXSTT7ee787.T7ee787Primitives Tff7b72import Te6edf3Telephony Tff7b72as Te6edf3LXSTTelephony T8b949e# noqa: E402

Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787telephone_manager Tff7b72import Te6edf3TelephoneManager T8b949e# noqa: E402


Tff7b72class T56d364_DummyThreadTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3targetTff7b72=Tff7b72NoneTb4b4b4, Te6edf3daemonTff7b72=Tff7b72NoneTb4b4b4, Te6edf3argsTff7b72=Tb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3kwargsTff7b72=Tff7b72NoneTb4b4b4, Tff7b72*Tff7b72*Te6edf3_extraTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget Tff7b72= Te6edf3target
Tff7b72selfTff7b72.Td2a8ffdaemon Tff7b72= Te6edf3daemon
Tff7b72selfTff7b72.Td2a8ffargs Tff7b72= Te6edf3args
Tff7b72selfTff7b72.Td2a8ffkwargs Tff7b72= Te6edf3kwargs Tff7b72or Tb4b4b4{Tb4b4b4}

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None


Tff7b72class T56d364_DummyDestinationTb4b4b4:
Te6edf3IN Tff7b72= T79c0ff0
Te6edf3OUT Tff7b72= T79c0ff1
Te6edf3SINGLE Tff7b72= T79c0ff2
Te6edf3PROVE_NONE Tff7b72= T79c0ff3

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3identityTb4b4b4, Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffidentity Tff7b72= Te6edf3identity
Tff7b72selfTff7b72.Td2a8ffhash Tff7b72= Ta5d6ffbTa5d6ff"Tffea00\xaaTa5d6ff" Tff7b72* T79c0ff16

Tff7b72def Td2a8ffset_proof_strategyTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffset_link_established_callbackTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffannounceTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None


Tff7b72def Td2a8ff_install_lxst_stubsTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTff7b72.Td2a8ffRNSTb4b4b4, Ta5d6ff"Ta5d6fflogTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4: Tff7b72NoneTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTff7b72.Td2a8ffRNSTb4b4b4, Ta5d6ff"Ta5d6ffDestinationTa5d6ff"Tb4b4b4, Te6edf3_DummyDestinationTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3LXSTTelephonyTff7b72.Td2a8ffRNSTb4b4b4,
Ta5d6ff"Ta5d6ffTransportTa5d6ff"Tb4b4b4,
Te6edf3SimpleNamespaceTb4b4b4(
Te6edf3deregister_destinationTff7b72=Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3has_pathTff7b72=Tff7b72lambda Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4: Tff7b72TrueTb4b4b4,
Te6edf3request_pathTff7b72=Tff7b72lambda Tff7b72*Te6edf3_argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3_kwargsTb4b4b4: Tff7b72NoneTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTff7b72.Td2a8ffthreadingTb4b4b4, Ta5d6ff"Ta5d6ffThreadTa5d6ff"Tb4b4b4, Te6edf3_DummyThreadTb4b4b4)


Tff7b72def Td2a8ff_mock_identityTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3SimpleNamespaceTb4b4b4(Tffa657hashTff7b72=Ta5d6ffbTa5d6ff"Tffea00\x01Ta5d6ff" Tff7b72* T79c0ff16Tb4b4b4)


Tff7b72def Td2a8fftest_lxst_telephone_lifecycle_and_timeoutsTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3_install_lxst_stubsTb4b4b4(Te6edf3monkeypatchTb4b4b4)
Te6edf3identity Tff7b72= Te6edf3_mock_identityTb4b4b4(Tb4b4b4)

Te6edf3telephone Tff7b72= Te6edf3LXSTTelephonyTff7b72.Td2a8ffTelephoneTb4b4b4(Te6edf3identityTb4b4b4)
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffcall_status Tff7b72== Te6edf3LXSTTelephonyTff7b72.Td2a8ffSignallingTff7b72.Td2a8ffSTATUS_AVAILABLE
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffdestination Tff7b72is Tff7b72not Tff7b72None

Te6edf3telephoneTff7b72.Td2a8ffset_connect_timeoutTb4b4b4(T79c0ff37Tb4b4b4)
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffestablishment_timeout Tff7b72== T79c0ff37

Te6edf3telephoneTff7b72.Td2a8ffset_busy_tone_timeTb4b4b4(T79c0ff0Tb4b4b4)
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffbusy_tone_seconds Tff7b72== T79c0ff0

Te6edf3telephoneTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffdestination Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_lxst_switch_profile_updates_codec_and_frame_timeTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3_install_lxst_stubsTb4b4b4(Te6edf3monkeypatchTb4b4b4)
Te6edf3identity Tff7b72= Te6edf3_mock_identityTb4b4b4(Tb4b4b4)
Te6edf3fake_codec Tff7b72= Tffa657objectTb4b4b4(Tb4b4b4)

Tff7b72class T56d364_FakeMixerTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3target_frame_msTff7b72=Tff7b72NoneTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3target_frame_ms
Tff7b72selfTff7b72.Td2a8ffgain Tff7b72= Te6edf3gain
Tff7b72selfTff7b72.Td2a8ffmuted Tff7b72= Tff7b72False

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffmuteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3mutedTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmuted Tff7b72= Te6edf3muted

Tff7b72def Td2a8ffunmuteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3unmutedTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmuted Tff7b72= Tff7b72not Te6edf3unmuted

Tff7b72class T56d364_FakeLineSourceTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffargs Tff7b72= Te6edf3args
Tff7b72selfTff7b72.Td2a8ffkwargs Tff7b72= Te6edf3kwargs

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72class T56d364_FakePipelineTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sourceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsource Tff7b72= Te6edf3source
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ffsink Tff7b72= Te6edf3sink

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72None

Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTb4b4b4, Ta5d6ff"Ta5d6ffMixerTa5d6ff"Tb4b4b4, Te6edf3_FakeMixerTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTb4b4b4, Ta5d6ff"Ta5d6ffLineSourceTa5d6ff"Tb4b4b4, Te6edf3_FakeLineSourceTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3LXSTTelephonyTb4b4b4, Ta5d6ff"Ta5d6ffPipelineTa5d6ff"Tb4b4b4, Te6edf3_FakePipelineTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTb4b4b4,
Ta5d6ff"Ta5d6ffget_codecTa5d6ff"Tb4b4b4,
Tff7b72lambda Te6edf3_profileTb4b4b4: Te6edf3fake_codecTb4b4b4,
Tb4b4b4)

Te6edf3telephone Tff7b72= Te6edf3LXSTTelephonyTff7b72.Td2a8ffTelephoneTb4b4b4(Te6edf3identityTb4b4b4)
Te6edf3telephoneTff7b72.Td2a8ffcall_status Tff7b72= Te6edf3LXSTTelephonyTff7b72.Td2a8ffSignallingTff7b72.Td2a8ffSTATUS_ESTABLISHED
Te6edf3telephoneTff7b72.Td2a8ffactive_call Tff7b72= Te6edf3SimpleNamespaceTb4b4b4(
Te6edf3profileTff7b72=Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffQUALITY_MEDIUMTb4b4b4,
Te6edf3filtersTff7b72=Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3packetizerTff7b72=Te6edf3MagicMockTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3telephoneTff7b72.Td2a8fftransmit_mixer Tff7b72= Te6edf3_FakeMixerTb4b4b4(Te6edf3target_frame_msTff7b72=T79c0ff60Tb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4)
Te6edf3telephoneTff7b72.Td2a8ffaudio_input Tff7b72= Te6edf3_FakeLineSourceTb4b4b4(Tb4b4b4)
Te6edf3telephoneTff7b72.Td2a8fftransmit_pipeline Tff7b72= Te6edf3_FakePipelineTb4b4b4(Tb4b4b4)

Te6edf3telephoneTff7b72.Td2a8ffswitch_profileTb4b4b4(Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffQUALITY_HIGHTb4b4b4, Te6edf3from_signallingTff7b72=Tff7b72TrueTb4b4b4)

Tff7b72assert Te6edf3telephoneTff7b72.Td2a8ffactive_callTff7b72.Td2a8ffprofile Tff7b72== Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffQUALITY_HIGH
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8fftarget_frame_time_ms Tff7b72== Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffget_frame_timeTb4b4b4(
Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffQUALITY_HIGH
Tb4b4b4)
Tff7b72assert Te6edf3telephoneTff7b72.Td2a8fftransmit_codec Tff7b72is Te6edf3fake_codec

Te6edf3telephoneTff7b72.Td2a8ffactive_call Tff7b72= Tff7b72None
Te6edf3telephoneTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)


Tff7b72def Td2a8fftest_telephone_manager_init_uses_real_lxst_telephoneTb4b4b4(Te6edf3monkeypatchTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3_install_lxst_stubsTb4b4b4(Te6edf3monkeypatchTb4b4b4)
Te6edf3cfg Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3cfgTff7b72.Td2a8fftelephone_audio_profile_idTff7b72.Td2a8ffgetTff7b72.Td2a8ffreturn_value Tff7b72= Te6edf3LXSTTelephonyTff7b72.Td2a8ffProfilesTff7b72.Td2a8ffQUALITY_MAX
Te6edf3tm Tff7b72= Te6edf3TelephoneManagerTb4b4b4(
Te6edf3identityTff7b72=Te6edf3_mock_identityTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3config_managerTff7b72=Te6edf3cfgTb4b4b4,
Te6edf3storage_dirTff7b72=Tffa657strTb4b4b4(Te6edf3tmp_pathTb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3tmTff7b72.Td2a8ffinit_telephoneTb4b4b4(Tb4b4b4)

Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3tmTff7b72.Td2a8fftelephoneTb4b4b4, Te6edf3LXSTTelephonyTff7b72.Td2a8ffTelephoneTb4b4b4)
Tff7b72assert Te6edf3tmTff7b72.Td2a8fftelephoneTff7b72.Td2a8ffestablishment_timeout Tff7b72== T79c0ff30
Tff7b72assert Te6edf3tmTff7b72.Td2a8fftelephoneTff7b72.Td2a8ffbusy_tone_seconds Tff7b72== T79c0ff0

Te6edf3tmTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────